package org.acghub.json;

import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.gson.JsonObject;
import org.bson.BsonDocument;
import org.bson.Document;

public interface MultiMarshal {

    //document
    Document marshal(Document writer);

    void unmarshal(Document reader);

    //bson document
    BsonDocument marshal(BsonDocument writer);

    void unmarshal(BsonDocument reader);

    // fastjson2
    JSONObject marshal(JSONObject writer);

    void unmarshal(JSONObject reader);

    //jackson
    ObjectNode marshal(ObjectNode writer);

    void unmarshal(ObjectNode reader);

    //gson
    JsonObject marshal(JsonObject writer);

    void unmarshal(JsonObject reader);

    //binary


}
